﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Text;

namespace myAutoExcuteJobService.Tools
{
  public  class fileAtion
    {
      private static   int rowNumber;


      /// <summary>
      /// 读取text文件到list中
      /// </summary>
      /// <param name="path"></param>
        public List<string> Read(string path)
        {
            List<string> textList = new List<string>();
            StreamReader sr = new StreamReader(path, Encoding.UTF8);
            String line;
            rowNumber = 0;
            while ((line = sr.ReadLine()) != null)
            {
                if (line.Contains("&$row$&")) 
                {
                    rowNumber++;
                }
                textList.Add(line);
            }
            sr.Close();
            return textList;
        }

      /// <summary>
      /// 将list<string>按照行进行写入文件。
      /// </summary>
      /// <param name="path"></param>
        public void Write(string path,List<string> textList)
        {
            FileStream fs = new FileStream(path, FileMode.Create);
            StreamWriter sw = new StreamWriter(fs,Encoding.UTF8);
            //开始写入
            foreach (var item in textList){
            sw.WriteLine(item);
            }
            //清空缓冲区
            sw.Flush();
            //关闭流
            sw.Close();
            fs.Close();
        }


        public string FilePath() 
        {
                //获取当前进程的完整路径，包含文件名(进程名)。  
    string str = this.GetType().Assembly.Location;  
   // result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)  
      
    //获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径，包含文件名(进程名)。  
     str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;  
    //result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)  
      
    //获取和设置当前目录（即该进程从中启动的目录）的完全限定路径。  
     str = System.Environment.CurrentDirectory;  
   // result: X:\xxx\xxx (.exe文件所在的目录)  
      
    //获取当前 Thread 的当前应用程序域的基目录，它由程序集冲突解决程序用来探测程序集。  
   str = System.AppDomain.CurrentDomain.BaseDirectory;  
   // result: X:\xxx\xxx\ (.exe文件所在的目录+"\")  
      
    //获取和设置包含该应用程序的目录的名称。(推荐)  
    str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;  
    //: X:\xxx\xxx\ (.exe文件所在的目录+"\")  
    //获取应用程序的当前工作目录(不可靠)。  
    str = System.IO.Directory.GetCurrentDirectory();  
  //  result: X:\xxx\xxx (.exe文件所在的目录)  
    return str;
        }
      /// <summary>
      /// 在日志文件中添加日志信息
      /// </summary>
      /// <param name="loginfo"></param>
        public  bool  writelog(string loginfo,string fileName) 
        {
            try
            {
                //全局变量声明
                var fileAction = new Tools.fileAtion();
                //得到当前进程运行目录FP
                string filepath = this.GetType().Assembly.Location; //System.AppDomain.CurrentDomain.BaseDirectory+"myerror.txt";
                string FP = "";
                string[] fpstr = filepath.Split('\\');
                for (int i = 0; i < fpstr.Length; i++)
                {
                    if (fpstr.Length == i + 1) { FP += fileName; continue; }
                    FP += fpstr[i] + "\\";
                }

                //文件初始化
                if (!File.Exists(FP)) { File.Create(FP).Close(); }

                //读取当前目录中的异常日志
                List<string> strLst = fileAction.Read(FP);
                //对日志进行添加内容
                strLst.Add("第" + (rowNumber + 1) + "行--(" + loginfo + ")【" + DateTime.Now.ToString() + "】" + "&$row$&");
                //进行保存日志信息
                fileAction.Write(FP, strLst);
                return true;
            }
            catch (Exception e) { return false; }
        
        }

    
    }
  public class Dbaction 
  {
   
       public int writedblog(int event_key,string time,string type, string info)
  {
      string sqlstr = @"INSERT INTO [Edoc2.Form].[dbo].[event_log]([event_key],[time],[type],[info])  VALUES(" + event_key + ",'" + time + "','" + type + "','" + info + "')";
      int count = new Ado().insert(sqlstr);
      return count;
  
  }

  
  }
}
